         //========================================================
        // External variables
        //=========================================================
         //------------------------------------------- ADC Sampling control
        //VK70xnMCDLL_fmt int Def_Function_OUTfmt  VK70xNMC_Initialize(int mci, double refvol, int bitmode, int sr, int volrg15, int volrg26, int volrg37, int volrg48);
         [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Initialize", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Initialize(int mci, double refvol, int bitmode, int sr, int volrg15, int volrg26, int volrg37, int volrg48);
       //VK70xnMCDLL_fmt int Def_Function_OUTfmt  VK70xNMC_Initialize_2(int mci, double refvol, int bitmode, int sr, int npoints, int timeinval, int *volrg);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Initialize_2", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Initialize_2(int mci, double refvol, int bitmode, int sr, int npoints, int timeinval,int[] volrg);
        
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_StartSampling", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_StartSampling(int mci);
         [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_StartSampling_NPoints", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_StartSampling_NPoints(int mci, int Npointsnums);
         [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_StopSampling", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_StopSampling(int mci);

        
	     //VK70xnMCDLL_fmt int Def_Function_OUTfmt  VK70xNMC_Set_SystemMode(int mci, int modelval,int  samplemethod,int  sdfilefmt);
         [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Set_SystemMode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Set_SystemMode(int mci, int modelval,int  samplemethod,int  sdfilefmt); 

         //VK70xnMCDLL_fmt int Def_Function_OUTfmt  VK70xNMC_Set_AdditionalFeature(int mci, int funcNo, int para1, double para2);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Set_AdditionalFeature", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Set_AdditionalFeature(int mci, int funcNo, int para1, double para2);
       // VK70xnMCDLL_fmt int Def_Function_OUTfmt  VK70xNMC_Set_DeviceDefaultParameter(int mci, char *wrmodel, char *wrsn, int *para);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Set_DeviceDefaultParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Set_DeviceDefaultParameter(int mci, byte[] wrmodel, byte[]  wrsn,int[]  para);
        //VK70xnMCDLL_fmt int Def_Function_OUTfmt  VK70xNMC_Set_eNetParameter(int mci, char *para, int len);		
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Set_eNetParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Set_eNetParameter(int mci, byte[] para,int len);
       
        // VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_ADCConfigParameter(int mci, int *sr, int *npoints, int *timeintervals, int *bitmode, int *para, int timeout);
	    [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_ADCConfigParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Get_ADCConfigParameter(int mci, ref int sr, ref int npoints, ref int timeintervals, ref int bitmode, int[] para, int timeout);
        //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_SystemMode(int mci, int *sysmode, int *samplecmd, int *sdfilefmt, int timeout);
	    [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_SystemMode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Get_SystemMode(int mci, ref int sysmode, ref int samplecmd, ref int sdfilefmt, int timeout);
       // VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_DeviceDefaultParameter(int mci, char *rdmodol, char *rdswver, char *rdhdver, char *rdsn, int *para, int timeout);
	    [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_DeviceDefaultParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Get_DeviceDefaultParameter(int mci, byte[] rdmodol,byte[] rdswver,byte[] rdhdver, byte[] rdsn, int[] para, int timeout);
        //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_eNetParameter(int mci, char *tvalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_eNetParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
         public static extern int VK70xNMC_Get_eNetParameter(int mci, byte[] tvalue,int timeout);
        //-------------------------------------------------byt
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetVersionLot", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern char[] VK70xNMC_GetVersionLot();

        //------------------------------------------ ADC Sampling Data ouppout
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetOneChannel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetOneChannel(int mci, int CHNum, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetFourChannel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetFourChannel(int mci, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetAllChannel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetAllChannel(int mci, double[] adcbuffer, int rsamplenum); // for VK702N 

        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetOneChannel_WithIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetOneChannel_WithIOStatus(int mci, int CHNum, double[] adcbuffer, int rsamplenum, int ioenable);// for VK701N,VK701S,VK702N
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetFourChannel_WithIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetFourChannel_WithIOStatus(int mci, double[] adcbuffer, int rsamplenum, int ioenable);// for VK701N,VK701S,VK702N
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetAllChannel_WithIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetAllChannel_WithIOStatus(int mci, double[] adcbuffer, int rsamplenum, int ioenable); // for VK702N 
        //-------------------------
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetFixedFourChannel_CH1CH2_IO2IO3", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetFixedFourChannel_CH1CH2_IO2IO3(int mci, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N 
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetFixedFourChannel_CH3CH4_IO2IO3", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetFixedFourChannel_CH3CH4_IO2IO3(int mci, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N 
        //------------
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_GetIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_GetIOStatus(int mci, int[] iostatus);
      
          //===========================================================
	     // output
	     //==========================================================
	     //------------------------------------------ IO funtion setup
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_AllIOS_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_AllIOS_Blocking(int mci, ref int iobuffer, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_IO1_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_IO1_Blocking(int mci, ref int iovalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_IO2_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_IO2_Blocking(int mci, ref int iovalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_IO3_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_IO3_Blocking(int mci, ref int iovalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_IO4_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_IO4_Blocking(int mci, ref int iovalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_PWM_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_PWM_Blocking(int mci, ref double dutyval, ref int freqval, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_DAC_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_DAC_Blocking(int mci, ref int dacvalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_Counter_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_Counter_Blocking(int mci, ref int countervalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_Temperature_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
	      public static extern int  VK70xNMC_Get_Temperature_Blocking(int mci, ref double tempvalue, int timeout);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_Freq_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Get_Freq_Blocking(int mci, ref int freqvalue, int timeout);
        //[DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_ExTemperatureHumidity_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        //public static extern int VK70xNMC_Get_ExTemperatureHumidity_Blocking(int mci, ref double tempvalue, ref double humidity, int timeout);
        //=========================================================
        // sd card
        //=========================================================
        //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Set_SaveFileDeafultPath(int tflag, const char *defaultdir);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Set_SaveFileDeafultPath", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Set_SaveFileDeafultPath(int tflag, char[] defaultdir);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_SDFileRuningInformation(int mci, int *para);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_SDFileRuningInformation", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Get_SDFileRuningInformation(int mci, int[] para);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Enter_SDFileSystem(int mci);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Enter_SDFileSystem", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Enter_SDFileSystem(int mci);

	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Exit_SDFileSystem(int mci);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Exit_SDFileSystem", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Exit_SDFileSystem(int mci);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_SDFileDIR(int mci);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_SDFileDIR", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Get_SDFileDIR(int mci);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_OneSDFile(int mci, int fileindex);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_OneSDFile", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Get_OneSDFile(int mci, int fileindex);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_MultiSDFiles(int mci);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_MultiSDFiles", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Get_MultiSDFiles(int mci);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Delete_OneSDFile(int mci, int fileindex);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Delete_OneSDFile", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  VK70xNMC_Delete_OneSDFile(int mci, int fileindex);
	    //VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Delete_MultiSDFiles(int mci);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Delete_MultiSDFiles", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int VK70xNMC_Delete_MultiSDFiles(int mci);
        //=========================================================
	     // Server
	     //=========================================================
	     //------------------------------------------  TCP/IP Server
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_TCPClose", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int  Server_TCPClose(int portnumber);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_TCPOpen", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Server_TCPOpen(int portnumber);	
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_Get_ServerPort", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Server_Get_ServerPort(ref int iport);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_Bind_ConnectedClient", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Server_Bind_ConnectedClient(int tflag);
	     //---------------------------------------- device information        
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_Get_ConnectedClientNumbers", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Server_Get_ConnectedClientNumbers(ref int cnum);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_Get_ConnectedClientHandle", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Server_Get_ConnectedClientHandle(int mci, ref int ihadble, Byte[] ipadr); 
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "Server_Get_RxTotoalBytes", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
        public static extern int Server_Get_RxTotoalBytes(ref int totalbytesnum, int clrflag);	
        
        //------------------------------------------- facotry and update
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK702NHMC_Set_DeviceEnterUpgradeMode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
	     public static extern int   VK702NHMC_Set_DeviceEnterUpgradeMode(int mci);

        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Get_ConvertBin2Text_Progress", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
	     public static extern int   VK70xNMC_Get_ConvertBin2Text_Progress(ref int precent,ref int tstatus);
        [DllImport("VK70xNMC_DAQ2.dll", EntryPoint = "VK70xNMC_Start_ConvertBin2Text", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
	     public static extern int   VK70xNMC_Start_ConvertBin2Text(char[] filename);